﻿using System.Windows.Media;
using personalplaner.business.extensions;
using personalplaner.business.enums;

namespace personalplaner.business.stamm
{
	public class Dienst : ItemBase
	{

		protected override string IsPropertyValid(string property)
		{
			switch (property)
			{
				case "Color":
				case "Name":
					if (string.IsNullOrEmpty(Name) && Color == null)
						return property;
					break;
				case "KurzText":
					if (string.IsNullOrEmpty(KurzText))
						return property;
					break;
                //case "LangText":
                //    if (string.IsNullOrEmpty(LangText))
                //        return property;
                //    break;
			}

			return base.IsPropertyValid(property);
		}


		int _dienstID;
		public int DienstID
		{
			get { return _dienstID; }
			set
			{
				_dienstID = value;
				RaisePropertyChanged("DienstID");
			}
		}

		bool _isGerechnet;
		public bool IsGerechnet
		{
			get { return _isGerechnet; }
			set
			{
				_isGerechnet = value;
				RaisePropertyChanged("IsGerechnet");
			}
		}

		int _einsatzProTag;
		public int EinsatzProTag
		{
			get { return _einsatzProTag; }
			set
			{
				_einsatzProTag = value;
				RaisePropertyChanged("EinsatzProTag");
			}
		}

		string _dienstName;
		public string DienstName
		{
			get { return _dienstName; }
			set
			{
				_dienstName = value;
				RaisePropertyChanged("DienstName");
			}
		}

		string _kurzText;
		public string KurzText
		{
			get { return _kurzText; }
			set
			{
				_kurzText = value;
				RaisePropertyChanged("KurzText");
			}
		}

		string _langText;
		public string LangText
		{
			get { return _langText; }
			set
			{
				_langText = value;
				RaisePropertyChanged("LangText");
			}
		}

		int _abteilungID;
		public int AbteilungID
		{
			get { return _abteilungID; }
			set
			{
				_abteilungID = value;
				RaisePropertyChanged("AbteilungID");
			}
		}

		string _abteilungName;
		public string AbteilungName
		{
			get { return _abteilungName; }
			set
			{
				_abteilungName = value;
				RaisePropertyChanged("AbteilungName");
			}
		}

		int _typ;
		public int Typ
		{
			get { return _typ; }
			set
			{
				_typ = value;
				RaisePropertyChanged("Typ");
			}
		}

		public int RGB
		{
			get
			{
				return Color.ToInt();
			}
			set
			{
				if (Color == null)
					Color =  value.ToColor();
			}
		}

		Color? _color;
		public Color? Color
		{
			get { return _color; }
			set
			{
				_color = value;
				RaisePropertyChanged("Color");
			}
		}

		public string ColorString
		{
			get
			{
				return Color.ToArgbString();
			}
			set
			{
				if (Color == null)
					Color = value.ToColor();
			}
		}

		bool _isGanzerTag;
		public bool IsGanzerTag
		{
			get { return _isGanzerTag; }
			set
			{
				_isGanzerTag = value;
				RaisePropertyChanged("IsGanzerTag");
			}
		}

		public enDienstType DienstType
		{
			get
			{
				return (enDienstType)Typ;
			}
			set
			{
				Typ = (int)value;
				RaisePropertyChanged("DienstType");
			}
		}
	}
}
